package com.molichuxing.gateway.bff.order.entity.request.create;

import com.molichuxing.framework.dto.RequestRootDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @Author: renzhengyu
 * @Description:
 * @Date: Created in 10:55 2019/8/27
 * @Modified By:
 **/
@Data
public class OrderDealerCreateVo extends RequestRootDto {

    private static final long serialVersionUID = 7579141801392067434L;
    /**
     * 订单号
     */
    private Long orderCode;

    /**
     * 经销商id
     */
    @ApiModelProperty(value = "经销商id")
    @NotNull(message = "经销商id不能为空")
    private Integer dealerId;

    /**
     * 分子公司id
     */
    @ApiModelProperty(value = "分子公司id")
    @NotNull(message = "分子公司id不能为空")
    private Integer subCompanyId;

    /**
     * 合同编号
     */
    @ApiModelProperty(value = "合同编号")
    private String contractNo;

    /**
     * 合同签订日期
     */
    private LocalDateTime contractSignDate;

    /**
     * 合同签订日期
     */
    @ApiModelProperty(value = "合同签订日期")
    private String contractSignDateStr;

    /**
     * 起租日期
     */
    private LocalDateTime startLeaseDate;

    /**
     * 起租日期
     */
    @ApiModelProperty(value = "起租日期Str")
    @NotBlank(message = "起租日期不能为空")
    private String startLeaseDateStr;

    /**
     * 还款日
     */
    @ApiModelProperty(value = "还款日")
    private Integer repayDate;

    /**
     * 租期（12：12月，n：n月）
     */
    @ApiModelProperty(value = "租期（12：12月，n：n月）")
    private Integer tenancy;

    /**
     * 付款方式（0：全款，1：月付，3：3月付，n：n月付）
     */
    @ApiModelProperty(value = "付款方式（0：全款，1：月付，3：3月付，n：n月付）")
    @NotNull(message = "付款方式不能为空")
    private Integer paymentCycle;

    /**
     * 租售数量
     */
    private Integer rentNumbers;

    /**
     * 总租金
     */
    private BigDecimal rentAmount;

    /**
     * 总保证金
     */
    private BigDecimal depositAmount;

    /**
     * 总期数（租期/付款周期）
     */
    private Integer totalPeriods;

    /**
     * 合同路径集合
     */
    @ApiModelProperty(value = "合同路径集合")
    @NotNull(message = "合同信息不能为空")
    @Size(min = 1, message = "合同信息最少1张,最大5张")
    private List<ContractPathVo> contractList;

    /**
     * 车辆信息集合
     */
    @ApiModelProperty(value = "车辆信息集合")
    @NotNull(message = "车辆信息不能为空")
    @Size(min = 1, message = "车辆信息最少1辆")
    private List<OrderDealerDeliveryCreateVo> orderDealerDeliveryCreateVoList;

}
